package com.hanyxx.io;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * @author layman
 * @date 2021/3/6
 */
public class Demo02 {

    static FileInputStream fis;

    public static void main(String[] args) throws IOException {
        read01();
        read02();
        read03();
    }

    // 循环读取单个字节
    private static void read01() throws IOException {
        fis = new FileInputStream("layman.txt");
        int len;
        while((len = fis.read()) != -1){
            // 将读取到的字节转为字符，并打印输出
            System.out.print((char)len);
        }
        System.out.println();
        fis.close();
    }
    /**
     * int read(byte[] b)：从输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
     */
    private static void read02() throws IOException {
        fis = new FileInputStream("layman.txt");
        // fis.available()：获取流中能够读取到的有效字节个数
        byte[] bytes = new byte[fis.available()];
        int len = fis.read(bytes);
        fis.close();

        System.out.println("------------------");
        System.out.println("读取到的字节个数: " + len);
        System.out.println(new String(bytes));
    }
    /**
     * int read(byte[] b, int off, int len) ：从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
     */
    private static void read03() throws IOException {
        fis = new FileInputStream("layman.txt");

        byte[] bytes = new byte[fis.available()];
        // 从索引3开始，读取3个字节
        int len = fis.read(bytes,2,3);
        fis.close();

        System.out.println("------------------");
        System.out.println("读取到的字节个数: " + len);
        System.out.println(new String(bytes));
    }
}
